/*
 * clientGUI2.java
 *
 * Created on __DATE__, __TIME__
 */

package client;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JList;

/**
 * 
 * @author __USER__
 */
public class ClientView extends javax.swing.JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private final List<JButton> mapButtons = new LinkedList<JButton>();

	public void setConnectPanelVisibility(final boolean b) {
		this.connectPanel.setVisible(b);
	}

	public void setMainGamePanelVisibility(final boolean b) {
		this.mainGamePanel.setVisible(b);
	}

	public void setConnectLabelVisibility(final boolean b) {
		this.connectLabel.setVisible(b);
	}

	public void setConnectButtonEnabled(final boolean b) {
		this.connectButton.setEnabled(b);
	}

	public List<JButton> getMapButtons() {
		return this.mapButtons;
	}

	public javax.swing.JTextField getConnectPlayerName() {
		return this.connectPlayerName;
	}

	public javax.swing.JTextField getConnectServerIP() {
		return this.connectServerIP;
	}

	public javax.swing.JPanel getClientGUIPanel() {
		return this.clientGUIPanel;
	}

	private void makeMapButtonArray() {
		this.mapButtons.add(this.jButton1);
		this.mapButtons.add(this.jButton2);
		this.mapButtons.add(this.jButton3);
		this.mapButtons.add(this.jButton4);
		this.mapButtons.add(this.jButton5);
		this.mapButtons.add(this.jButton6);
		this.mapButtons.add(this.jButton7);
		this.mapButtons.add(this.jButton8);
		this.mapButtons.add(this.jButton9);
		this.mapButtons.add(this.jButton10);
		this.mapButtons.add(this.jButton11);
		this.mapButtons.add(this.jButton12);
		this.mapButtons.add(this.jButton13);
		this.mapButtons.add(this.jButton14);
		this.mapButtons.add(this.jButton15);
		this.mapButtons.add(this.jButton16);
		this.mapButtons.add(this.jButton17);
		this.mapButtons.add(this.jButton18);
		this.mapButtons.add(this.jButton19);
		this.mapButtons.add(this.jButton20);
		this.mapButtons.add(this.jButton21);
		this.mapButtons.add(this.jButton22);
		this.mapButtons.add(this.jButton23);
		this.mapButtons.add(this.jButton24);
		this.mapButtons.add(this.jButton25);
		this.mapButtons.add(this.jButton26);
		this.mapButtons.add(this.jButton27);
		this.mapButtons.add(this.jButton28);
		this.mapButtons.add(this.jButton29);
		this.mapButtons.add(this.jButton30);
		this.mapButtons.add(this.jButton31);
		this.mapButtons.add(this.jButton32);
		this.mapButtons.add(this.jButton33);
		this.mapButtons.add(this.jButton34);
		this.mapButtons.add(this.jButton35);
		this.mapButtons.add(this.jButton36);
		this.mapButtons.add(this.jButton37);
		this.mapButtons.add(this.jButton38);
		this.mapButtons.add(this.jButton39);
		this.mapButtons.add(this.jButton40);
		this.mapButtons.add(this.jButton41);
		this.mapButtons.add(this.jButton42);
		this.mapButtons.add(this.jButton43);
		this.mapButtons.add(this.jButton44);
		this.mapButtons.add(this.jButton45);
		this.mapButtons.add(this.jButton46);
		this.mapButtons.add(this.jButton47);
		this.mapButtons.add(this.jButton48);
		this.mapButtons.add(this.jButton49);
	}

	/** Creates new form clientGUI2 */
	public ClientView() {
		initComponents();
		showMapImage();
		pack();
	}

	public ClientController getClientController() {
		return this.controller;
	}

	public ClientView(final ClientController c) {
		initSound();
		this.controller = c;
		initComponents();
		makeMapButtonArray();
		showMapImage();
		setConnectLabelVisibility(false);
		pack();
	}

	private AudioClip sound;

	private void initSound() {
		final URL url = getClass().getResource("gui/music/Black.wav");
		System.out.println(url + "");
		this.sound = Applet.newAudioClip(url);
	}

	// GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {
		java.awt.GridBagConstraints gridBagConstraints;

		this.selectCharacterButtonGroup = new javax.swing.ButtonGroup();
		this.jLabel18 = new javax.swing.JLabel();
		this.clientGUIPanel = new javax.swing.JPanel();
		this.connectPanel = new javax.swing.JPanel();
		this.panel2 = new javax.swing.JPanel();
		this.jPanel1 = new javax.swing.JPanel();
		this.jLabel3 = new javax.swing.JLabel();
		this.connectPlayerName = new javax.swing.JTextField();
		this.jLabel6 = new javax.swing.JLabel();
		this.connectChar1 = new javax.swing.JRadioButton();
		this.jLabel7 = new javax.swing.JLabel();
		this.jLabel8 = new javax.swing.JLabel();
		this.jLabel9 = new javax.swing.JLabel();
		this.jLabel10 = new javax.swing.JLabel();
		this.jLabel11 = new javax.swing.JLabel();
		this.connectChar2 = new javax.swing.JRadioButton();
		this.connectChar3 = new javax.swing.JRadioButton();
		this.connectChar4 = new javax.swing.JRadioButton();
		this.connectChar5 = new javax.swing.JRadioButton();
		this.jLabel12 = new javax.swing.JLabel();
		this.connectServerIP = new javax.swing.JTextField();
		this.connectButton = new javax.swing.JButton();
		this.connectLabel = new javax.swing.JLabel();
		this.mainGamePanel = new javax.swing.JPanel();
		this.gameBoardPanel = new javax.swing.JPanel();
		this.gameBoardForeGround = new javax.swing.JPanel();
		this.jButton1 = new javax.swing.JButton();
		this.jButton2 = new javax.swing.JButton();
		this.jButton3 = new javax.swing.JButton();
		this.jButton4 = new javax.swing.JButton();
		this.jButton5 = new javax.swing.JButton();
		this.jButton6 = new javax.swing.JButton();
		this.jButton7 = new javax.swing.JButton();
		this.jButton8 = new javax.swing.JButton();
		this.jButton9 = new javax.swing.JButton();
		this.jButton10 = new javax.swing.JButton();
		this.jButton11 = new javax.swing.JButton();
		this.jButton12 = new javax.swing.JButton();
		this.jButton13 = new javax.swing.JButton();
		this.jButton14 = new javax.swing.JButton();
		this.jButton15 = new javax.swing.JButton();
		this.jButton16 = new javax.swing.JButton();
		this.jButton17 = new javax.swing.JButton();
		this.jButton18 = new javax.swing.JButton();
		this.jButton19 = new javax.swing.JButton();
		this.jButton20 = new javax.swing.JButton();
		this.jButton21 = new javax.swing.JButton();
		this.jButton22 = new javax.swing.JButton();
		this.jButton23 = new javax.swing.JButton();
		this.jButton24 = new javax.swing.JButton();
		this.jButton25 = new javax.swing.JButton();
		this.jButton26 = new javax.swing.JButton();
		this.jButton27 = new javax.swing.JButton();
		this.jButton28 = new javax.swing.JButton();
		this.jButton29 = new javax.swing.JButton();
		this.jButton30 = new javax.swing.JButton();
		this.jButton31 = new javax.swing.JButton();
		this.jButton32 = new javax.swing.JButton();
		this.jButton33 = new javax.swing.JButton();
		this.jButton34 = new javax.swing.JButton();
		this.jButton35 = new javax.swing.JButton();
		this.jButton36 = new javax.swing.JButton();
		this.jButton37 = new javax.swing.JButton();
		this.jButton38 = new javax.swing.JButton();
		this.jButton39 = new javax.swing.JButton();
		this.jButton40 = new javax.swing.JButton();
		this.jButton41 = new javax.swing.JButton();
		this.jButton42 = new javax.swing.JButton();
		this.jButton43 = new javax.swing.JButton();
		this.jButton44 = new javax.swing.JButton();
		this.jButton45 = new javax.swing.JButton();
		this.jButton46 = new javax.swing.JButton();
		this.jButton47 = new javax.swing.JButton();
		this.jButton48 = new javax.swing.JButton();
		this.jButton49 = new javax.swing.JButton();
		this.backgroundMapImage = new javax.swing.JLabel();
		this.gameBoardInfoPanel = new javax.swing.JPanel();
		this.emptyInfoPanel = new javax.swing.JPanel();
		this.movePanel = new javax.swing.JPanel();
		this.movePanelPlayerName = new javax.swing.JLabel();
		this.movePanelPlayerImage = new javax.swing.JLabel();
		this.movePanelDiceImage = new javax.swing.JLabel();
		this.movePanelDiceLabel = new javax.swing.JLabel();
		this.movePanelMoveButton = new javax.swing.JButton();
		this.fightPanel = new javax.swing.JPanel();
		this.jLabel2 = new javax.swing.JLabel();
		this.fightPlayerImage = new javax.swing.JLabel();
		this.jLabel14 = new javax.swing.JLabel();
		this.fightEnemyImage = new javax.swing.JLabel();
		this.jLabel17 = new javax.swing.JLabel();
		this.fightPlayerCombatValue = new javax.swing.JLabel();
		this.jLabel20 = new javax.swing.JLabel();
		this.fightEnemyCombatValue = new javax.swing.JLabel();
		this.jLabel22 = new javax.swing.JLabel();
		this.jLabel23 = new javax.swing.JLabel();
		this.fightPlayerRoll = new javax.swing.JLabel();
		this.fightEnemyRoll = new javax.swing.JLabel();
		this.fightOutcomeText = new javax.swing.JLabel();
		this.fightRollButton = new javax.swing.JButton();
		this.fightEndButton = new javax.swing.JButton();
		this.boardTileInfoPanel = new javax.swing.JPanel();
		this.currentTileImage = new javax.swing.JLabel();
		this.currentTileName = new javax.swing.JLabel();
		this.currentTileDescription = new javax.swing.JLabel();
		this.jLabel15 = new javax.swing.JLabel();
		this.currentTileCardList = new javax.swing.JLabel();
		this.drawnAdventureCardsPanel = new javax.swing.JPanel();
		this.drawnAdventureCardButton = new javax.swing.JButton();
		this.drawnAdventureCardContinueButton = new javax.swing.JButton();
		this.drawnAdventureCardNameLabel = new javax.swing.JLabel();
		this.drawnAdventureCardTileImage = new javax.swing.JLabel();
		this.drawnAdventureCardTileDescription = new javax.swing.JLabel();
		this.jLabel16 = new javax.swing.JLabel();
		this.drawnAdventureCardCardList = new javax.swing.JLabel();
		this.drawnAdventureCardCurrent = new javax.swing.JLabel();
		this.turnEndedPanel = new javax.swing.JPanel();
		this.jLabel1 = new javax.swing.JLabel();
		this.turnEndedLabel = new javax.swing.JLabel();
		this.gameEndedPanel = new javax.swing.JPanel();
		this.jLabel5 = new javax.swing.JLabel();
		this.gameEndedImageLabel = new javax.swing.JLabel();
		this.gameEndedNameLabel = new javax.swing.JLabel();
		this.characterTabbedPane = new javax.swing.JTabbedPane();
		this.charInfoPanel = new javax.swing.JPanel();
		this.playerImageLabel = new javax.swing.JLabel();
		this.playerNameLabel = new javax.swing.JLabel();
		this.playerLivesLabel = new javax.swing.JLabel();
		this.playerCoinsLabel = new javax.swing.JLabel();
		this.playerStrengthLabel = new javax.swing.JLabel();
		this.playerCraftLabel = new javax.swing.JLabel();
		this.logbookPanel = new javax.swing.JPanel();
		this.jScrollPane1 = new javax.swing.JScrollPane();
		this.logBook = new javax.swing.JTextArea();
		this.specialAbilitiesLabel = new javax.swing.JPanel();
		this.jScrollPane2 = new javax.swing.JScrollPane();
		this.specialAbilitiesList = new javax.swing.JList();
		this.specialAbilitiesName = new javax.swing.JLabel();
		this.specialAbilitiesDescription = new javax.swing.JLabel();
		this.specialAbilitiesSource = new javax.swing.JLabel();
		this.specialAbilitiesUseButton = new javax.swing.JButton();
		this.itemsPanel = new javax.swing.JPanel();
		this.jScrollPane3 = new javax.swing.JScrollPane();
		this.itemsList = new javax.swing.JList();
		this.itemsName = new javax.swing.JLabel();
		this.itemsDescription = new javax.swing.JLabel();
		this.itemsDropButton = new javax.swing.JButton();
		this.itemsType = new javax.swing.JLabel();
		this.spellsPanel = new javax.swing.JPanel();
		this.jScrollPane4 = new javax.swing.JScrollPane();
		this.spellsList = new javax.swing.JList();
		this.spellsName = new javax.swing.JLabel();
		this.spellsDescription = new javax.swing.JLabel();
		this.spellsUseButton = new javax.swing.JButton();
		this.gamePanel = new javax.swing.JPanel();
		this.gamePanelConnectedLabel = new javax.swing.JLabel();
		this.jLabel4 = new javax.swing.JLabel();
		this.soundButton = new javax.swing.JButton();
		this.connectBackgroundLabel = new javax.swing.JLabel();

		this.jLabel18.setText("jLabel18");

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setMinimumSize(new java.awt.Dimension(1000, 700));
		setResizable(false);

		this.clientGUIPanel.setMaximumSize(new java.awt.Dimension(1000, 700));
		this.clientGUIPanel
				.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

		this.connectPanel.setOpaque(false);

		this.panel2.setOpaque(false);

		this.jPanel1.setBorder(javax.swing.BorderFactory
				.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

		this.jLabel3.setText("Player name:");

		this.connectPlayerName.setText("Player");

		this.jLabel6.setText("Player character:");

		this.selectCharacterButtonGroup.add(this.connectChar1);
		this.connectChar1.setSelected(true);
		this.connectChar1
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

		this.jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource(
				"/client/gui/ogresmall.png"))); // NOI18N

		this.jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel8.setText("Char 2");

		this.jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel9.setText("Char 3");

		this.jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel10.setText("Char 4");

		this.jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel11.setText("Char 5");

		this.selectCharacterButtonGroup.add(this.connectChar2);
		this.connectChar2.setEnabled(false);
		this.connectChar2.setHideActionText(true);
		this.connectChar2
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.connectChar2
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						connectChar2ActionPerformed(evt);
					}
				});

		this.selectCharacterButtonGroup.add(this.connectChar3);
		this.connectChar3.setEnabled(false);
		this.connectChar3
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.connectChar3
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						connectChar3ActionPerformed(evt);
					}
				});

		this.selectCharacterButtonGroup.add(this.connectChar4);
		this.connectChar4.setEnabled(false);
		this.connectChar4
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.connectChar4
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						connectChar4ActionPerformed(evt);
					}
				});

		this.selectCharacterButtonGroup.add(this.connectChar5);
		this.connectChar5.setEnabled(false);
		this.connectChar5
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.connectChar5
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						connectChar5ActionPerformed(evt);
					}
				});

		this.jLabel12.setText("Server name:");

		this.connectServerIP.setEditable(false);
		this.connectServerIP.setText("ProServer");

		this.connectButton.setText("Connect");

		this.connectLabel
				.setText("Connected to server. Waiting for other players...");

		final javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
				this.jPanel1);
		this.jPanel1.setLayout(jPanel1Layout);
		jPanel1Layout
				.setHorizontalGroup(jPanel1Layout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								jPanel1Layout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																jPanel1Layout
																		.createSequentialGroup()
																		.addGroup(
																				jPanel1Layout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.LEADING)
																						.addComponent(
																								this.jLabel6)
																						.addGroup(
																								jPanel1Layout
																										.createSequentialGroup()
																										.addGroup(
																												jPanel1Layout
																														.createParallelGroup(
																																javax.swing.GroupLayout.Alignment.TRAILING)
																														.addGroup(
																																javax.swing.GroupLayout.Alignment.LEADING,
																																jPanel1Layout
																																		.createSequentialGroup()
																																		.addComponent(
																																				this.jLabel3)
																																		.addPreferredGap(
																																				javax.swing.LayoutStyle.ComponentPlacement.RELATED,
																																				58,
																																				Short.MAX_VALUE)
																																		.addComponent(
																																				this.connectPlayerName,
																																				javax.swing.GroupLayout.PREFERRED_SIZE,
																																				126,
																																				javax.swing.GroupLayout.PREFERRED_SIZE))
																														.addGroup(
																																javax.swing.GroupLayout.Alignment.LEADING,
																																jPanel1Layout
																																		.createSequentialGroup()
																																		.addGroup(
																																				jPanel1Layout
																																						.createParallelGroup(
																																								javax.swing.GroupLayout.Alignment.TRAILING)
																																						.addGroup(
																																								jPanel1Layout
																																										.createSequentialGroup()
																																										.addGroup(
																																												jPanel1Layout
																																														.createParallelGroup(
																																																javax.swing.GroupLayout.Alignment.TRAILING,
																																																false)
																																														.addComponent(
																																																this.connectChar1,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																Short.MAX_VALUE)
																																														.addComponent(
																																																this.jLabel7,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																53,
																																																Short.MAX_VALUE))
																																										.addPreferredGap(
																																												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																																										.addGroup(
																																												jPanel1Layout
																																														.createParallelGroup(
																																																javax.swing.GroupLayout.Alignment.LEADING,
																																																false)
																																														.addComponent(
																																																this.connectChar2,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																Short.MAX_VALUE)
																																														.addComponent(
																																																this.jLabel8,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																53,
																																																Short.MAX_VALUE)))
																																						.addComponent(
																																								this.jLabel12))
																																		.addPreferredGap(
																																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																																		.addGroup(
																																				jPanel1Layout
																																						.createParallelGroup(
																																								javax.swing.GroupLayout.Alignment.LEADING,
																																								false)
																																						.addComponent(
																																								this.connectServerIP)
																																						.addGroup(
																																								jPanel1Layout
																																										.createSequentialGroup()
																																										.addGroup(
																																												jPanel1Layout
																																														.createParallelGroup(
																																																javax.swing.GroupLayout.Alignment.LEADING,
																																																false)
																																														.addComponent(
																																																this.connectChar3,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																Short.MAX_VALUE)
																																														.addComponent(
																																																this.jLabel9,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																53,
																																																Short.MAX_VALUE))
																																										.addPreferredGap(
																																												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																																										.addGroup(
																																												jPanel1Layout
																																														.createParallelGroup(
																																																javax.swing.GroupLayout.Alignment.LEADING,
																																																false)
																																														.addComponent(
																																																this.connectChar4,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																Short.MAX_VALUE)
																																														.addComponent(
																																																this.jLabel10,
																																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																																53,
																																																Short.MAX_VALUE))))))
																										.addGap(12,
																												12,
																												12)
																										.addGroup(
																												jPanel1Layout
																														.createParallelGroup(
																																javax.swing.GroupLayout.Alignment.LEADING,
																																false)
																														.addComponent(
																																this.connectChar5,
																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																Short.MAX_VALUE)
																														.addComponent(
																																this.jLabel11,
																																javax.swing.GroupLayout.DEFAULT_SIZE,
																																53,
																																Short.MAX_VALUE))))
																		.addContainerGap(
																				46,
																				Short.MAX_VALUE))
														.addGroup(
																javax.swing.GroupLayout.Alignment.TRAILING,
																jPanel1Layout
																		.createSequentialGroup()
																		.addComponent(
																				this.connectLabel,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				269,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				this.connectButton)
																		.addContainerGap()))));
		jPanel1Layout
				.setVerticalGroup(jPanel1Layout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								jPanel1Layout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																this.jLabel3)
														.addComponent(
																this.connectPlayerName,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.PREFERRED_SIZE))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(this.jLabel6)
										.addGap(27, 27, 27)
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																this.jLabel7,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																107,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(
																this.jLabel8,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																107,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(
																this.jLabel9,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																107,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(
																this.jLabel10,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																107,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(
																this.jLabel11,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																107,
																javax.swing.GroupLayout.PREFERRED_SIZE))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.TRAILING)
														.addGroup(
																jPanel1Layout
																		.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.LEADING)
																		.addComponent(
																				this.connectChar1)
																		.addComponent(
																				this.connectChar2)
																		.addComponent(
																				this.connectChar3)
																		.addComponent(
																				this.connectChar4))
														.addComponent(
																this.connectChar5))
										.addGap(57, 57, 57)
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																this.connectServerIP,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(
																this.jLabel12))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
												29, Short.MAX_VALUE)
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																this.connectButton)
														.addComponent(
																this.connectLabel))
										.addContainerGap()));

		final javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(
				this.panel2);
		this.panel2.setLayout(panel2Layout);
		panel2Layout.setHorizontalGroup(panel2Layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				javax.swing.GroupLayout.Alignment.TRAILING,
				panel2Layout
						.createSequentialGroup()
						.addContainerGap(311, Short.MAX_VALUE)
						.addComponent(this.jPanel1,
								javax.swing.GroupLayout.PREFERRED_SIZE,
								javax.swing.GroupLayout.DEFAULT_SIZE,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addGap(272, 272, 272)));
		panel2Layout.setVerticalGroup(panel2Layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				panel2Layout
						.createSequentialGroup()
						.addGap(107, 107, 107)
						.addComponent(this.jPanel1,
								javax.swing.GroupLayout.PREFERRED_SIZE,
								javax.swing.GroupLayout.DEFAULT_SIZE,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addContainerGap(221, Short.MAX_VALUE)));

		final javax.swing.GroupLayout connectPanelLayout = new javax.swing.GroupLayout(
				this.connectPanel);
		this.connectPanel.setLayout(connectPanelLayout);
		connectPanelLayout.setHorizontalGroup(connectPanelLayout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						connectPanelLayout
								.createSequentialGroup()
								.addComponent(this.panel2,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										javax.swing.GroupLayout.DEFAULT_SIZE,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addContainerGap(38, Short.MAX_VALUE)));
		connectPanelLayout.setVerticalGroup(connectPanelLayout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addComponent(this.panel2,
						javax.swing.GroupLayout.DEFAULT_SIZE,
						javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

		this.clientGUIPanel.add(this.connectPanel,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 1000,
						700));

		this.mainGamePanel.setMaximumSize(new java.awt.Dimension(1000, 700));
		this.mainGamePanel.setMinimumSize(new java.awt.Dimension(1000, 700));
		this.mainGamePanel.setOpaque(false);
		this.mainGamePanel.setPreferredSize(new java.awt.Dimension(1000, 700));
		this.mainGamePanel
				.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

		this.gameBoardPanel.setMinimumSize(new java.awt.Dimension(1, 1));
		this.gameBoardPanel.setLayout(new java.awt.GridBagLayout());

		this.gameBoardForeGround.setOpaque(false);
		this.gameBoardForeGround
				.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

		this.jButton1.setBorder(null);
		this.jButton1.setContentAreaFilled(false);
		this.gameBoardForeGround
				.add(this.jButton1,
						new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0,
								90, 45));

		this.jButton2.setContentAreaFilled(false);
		this.gameBoardForeGround
				.add(this.jButton2,
						new org.netbeans.lib.awtextra.AbsoluteConstraints(90,
								0, 85, 45));

		this.jButton3.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton3,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(175, 0, 85,
						45));

		this.jButton4.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton4,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 0, 80,
						45));

		this.jButton5.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton5,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 0, 85,
						45));

		this.jButton6.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton6,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(425, 0, 85,
						45));

		this.jButton7.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton7,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 0, 90,
						45));

		this.jButton8.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton8,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 45, 70,
						40));

		this.jButton9.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton9,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 85, 70,
						60));

		this.jButton10.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton10,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 145, 70,
						35));

		this.jButton11.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton11,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 180, 70,
						35));

		this.jButton12.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton12,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 215, 70,
						40));

		this.jButton13.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton13,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 255, 90,
						45));

		this.jButton14.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton14,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(425, 255, 85,
						45));

		this.jButton15.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton15,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 255, 85,
						45));

		this.jButton16.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton16,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 255, 80,
						45));

		this.jButton17.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton17,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(175, 255, 85,
						45));

		this.jButton18.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton18,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 255, 85,
						45));

		this.jButton19.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton19,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 255, 90,
						45));

		this.jButton20.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton20,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 215, 70,
						40));

		this.jButton21.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton21,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 175, 70,
						40));

		this.jButton22.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton22,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 135, 70,
						40));

		this.jButton23.setContentAreaFilled(false);
		this.gameBoardForeGround
				.add(this.jButton23,
						new org.netbeans.lib.awtextra.AbsoluteConstraints(0,
								90, 70, 45));

		this.jButton24.setContentAreaFilled(false);
		this.gameBoardForeGround
				.add(this.jButton24,
						new org.netbeans.lib.awtextra.AbsoluteConstraints(0,
								45, 70, 45));

		this.jButton25.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton25,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 45, 85,
						45));

		this.jButton26.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton26,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(155, 45, 95,
						45));

		this.jButton27.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton27,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 45, 100,
						45));

		this.jButton28.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton28,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 45, 90,
						45));

		this.jButton29.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton29,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 45, 90,
						45));

		this.jButton30.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton30,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 90, 50,
						45));

		this.jButton31.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton31,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 135, 50,
						35));

		this.jButton32.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton32,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 170, 50,
						40));

		this.jButton33.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton33,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 210, 90,
						45));

		this.jButton34.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton34,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 210, 90,
						45));

		this.jButton35.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton35,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 210,
						100, 45));

		this.jButton36.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton36,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(155, 210, 95,
						45));

		this.jButton37.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton37,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 210, 85,
						45));

		this.jButton38.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton38,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 175, 55,
						35));

		this.jButton39.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton39,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 135, 55,
						40));

		this.jButton40.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton40,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 90, 55,
						45));

		this.jButton41.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton41,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(125, 90, 115,
						40));

		this.jButton42.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton42,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 90, 115,
						40));

		this.jButton43.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton43,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(355, 90, 125,
						40));

		this.jButton44.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton44,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 130, 70,
						45));

		this.jButton45.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton45,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 175,
						120, 35));

		this.jButton46.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton46,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 175,
						110, 35));

		this.jButton47.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton47,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(125, 175,
						125, 35));

		this.jButton48.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton48,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(125, 130, 50,
						45));

		this.jButton49.setContentAreaFilled(false);
		this.gameBoardForeGround.add(this.jButton49,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(175, 130,
						235, 45));

		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 0;
		gridBagConstraints.gridy = 0;
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
		gridBagConstraints.weightx = 1.0;
		gridBagConstraints.weighty = 1.0;
		this.gameBoardPanel.add(this.gameBoardForeGround, gridBagConstraints);
		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 0;
		gridBagConstraints.gridy = 0;
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
		gridBagConstraints.weightx = 1.0;
		gridBagConstraints.weighty = 1.0;
		this.gameBoardPanel.add(this.backgroundMapImage, gridBagConstraints);

		this.mainGamePanel.add(this.gameBoardPanel,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 600,
						300));

		this.gameBoardInfoPanel.setOpaque(false);
		this.gameBoardInfoPanel.setLayout(new java.awt.CardLayout());

		this.emptyInfoPanel.setOpaque(false);

		final javax.swing.GroupLayout emptyInfoPanelLayout = new javax.swing.GroupLayout(
				this.emptyInfoPanel);
		this.emptyInfoPanel.setLayout(emptyInfoPanelLayout);
		emptyInfoPanelLayout.setHorizontalGroup(emptyInfoPanelLayout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGap(0, 370, Short.MAX_VALUE));
		emptyInfoPanelLayout.setVerticalGroup(emptyInfoPanelLayout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGap(0, 680, Short.MAX_VALUE));

		this.gameBoardInfoPanel.add(this.emptyInfoPanel, "emptyInfoCard");

		this.movePanel.setMaximumSize(new java.awt.Dimension(370, 680));
		this.movePanel.setMinimumSize(new java.awt.Dimension(370, 680));
		this.movePanel.setOpaque(false);

		this.movePanelPlayerName.setFont(new java.awt.Font("Segoe UI", 1, 18));
		this.movePanelPlayerName
				.setText("<html>PLAYER_NAME,<br>it is your turn to move!</html>");

		this.movePanelPlayerImage.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.movePanelPlayerImage
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.movePanelPlayerImage
				.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);

		this.movePanelDiceImage
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.movePanelDiceImage.setIcon(new javax.swing.ImageIcon(getClass()
				.getResource("/client/gui/die4.png"))); // NOI18N

		this.movePanelDiceLabel.setFont(new java.awt.Font("Segoe UI", 1, 14));
		this.movePanelDiceLabel
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.movePanelDiceLabel.setText("You rolled a 4.");

		this.movePanelMoveButton.setFont(new java.awt.Font("Segoe UI", 1, 18));
		this.movePanelMoveButton.setIcon(new javax.swing.ImageIcon(getClass()
				.getResource("/client/gui/throwdice.png"))); // NOI18N

		final javax.swing.GroupLayout movePanelLayout = new javax.swing.GroupLayout(
				this.movePanel);
		this.movePanel.setLayout(movePanelLayout);
		movePanelLayout
				.setHorizontalGroup(movePanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								movePanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												movePanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.movePanelPlayerName)
														.addComponent(
																this.movePanelPlayerImage,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																346,
																Short.MAX_VALUE))
										.addContainerGap())
						.addGroup(
								javax.swing.GroupLayout.Alignment.TRAILING,
								movePanelLayout.createSequentialGroup()
										.addContainerGap(123, Short.MAX_VALUE)
										.addComponent(this.movePanelMoveButton)
										.addGap(120, 120, 120))
						.addGroup(
								movePanelLayout
										.createSequentialGroup()
										.addGap(135, 135, 135)
										.addComponent(
												this.movePanelDiceImage,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												100,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addContainerGap(135, Short.MAX_VALUE))
						.addGroup(
								movePanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.movePanelDiceLabel,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												346, Short.MAX_VALUE)
										.addContainerGap()));
		movePanelLayout
				.setVerticalGroup(movePanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								movePanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(this.movePanelPlayerName)
										.addGap(18, 18, 18)
										.addComponent(
												this.movePanelPlayerImage,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												290,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addGap(18, 18, 18)
										.addComponent(this.movePanelMoveButton)
										.addGap(26, 26, 26)
										.addComponent(
												this.movePanelDiceImage,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												101,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(this.movePanelDiceLabel)
										.addContainerGap(22, Short.MAX_VALUE)));

		this.gameBoardInfoPanel.add(this.movePanel, "moveCard");

		this.fightPanel.setMaximumSize(new java.awt.Dimension(370, 680));
		this.fightPanel.setMinimumSize(new java.awt.Dimension(370, 680));
		this.fightPanel.setOpaque(false);

		this.jLabel2.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel2.setText("FIGHT!");

		this.fightPlayerImage
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.fightPlayerImage.setText("Player Image");
		this.fightPlayerImage.setBorder(new javax.swing.border.LineBorder(
				new java.awt.Color(0, 0, 0), 3, true));

		this.jLabel14.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.jLabel14.setText("vs.");

		this.fightEnemyImage
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.fightEnemyImage.setText("Enemy Image");
		this.fightEnemyImage.setBorder(new javax.swing.border.LineBorder(
				new java.awt.Color(0, 0, 0), 3, true));

		this.jLabel17.setText("Your Strength:");

		this.fightPlayerCombatValue
				.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.fightPlayerCombatValue.setText("7");

		this.jLabel20.setText("Enemy Strength:");

		this.fightEnemyCombatValue
				.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.fightEnemyCombatValue.setText("4");

		this.jLabel22.setText("Enemy Hit Roll:");

		this.jLabel23.setText("Your Hit Roll:");

		this.fightPlayerRoll.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.fightPlayerRoll.setText("3");

		this.fightEnemyRoll.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.fightEnemyRoll.setText("5");

		this.fightOutcomeText.setFont(new java.awt.Font("Segoe UI", 1, 14));
		this.fightOutcomeText
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.fightOutcomeText
				.setText("<html><center>You win the fight!<br>You gain 4 Strength XP.</center></html>");

		this.fightRollButton.setText("Roll the Dice!");
		this.fightRollButton
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						fightRollButtonActionPerformed(evt);
					}
				});

		this.fightEndButton.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.fightEndButton.setText("END FIGHT");
		this.fightEndButton
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						fightEndButtonActionPerformed(evt);
					}
				});

		final javax.swing.GroupLayout fightPanelLayout = new javax.swing.GroupLayout(
				this.fightPanel);
		this.fightPanel.setLayout(fightPanelLayout);
		fightPanelLayout
				.setHorizontalGroup(fightPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								fightPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												fightPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																fightPanelLayout
																		.createSequentialGroup()
																		.addGroup(
																				fightPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.LEADING)
																						.addComponent(
																								this.jLabel2,
																								javax.swing.GroupLayout.DEFAULT_SIZE,
																								346,
																								Short.MAX_VALUE)
																						.addGroup(
																								fightPanelLayout
																										.createSequentialGroup()
																										.addComponent(
																												this.fightPlayerImage,
																												javax.swing.GroupLayout.PREFERRED_SIZE,
																												116,
																												javax.swing.GroupLayout.PREFERRED_SIZE)
																										.addGap(18,
																												18,
																												18)
																										.addComponent(
																												this.jLabel14)
																										.addPreferredGap(
																												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
																												64,
																												Short.MAX_VALUE)
																										.addComponent(
																												this.fightEnemyImage,
																												javax.swing.GroupLayout.PREFERRED_SIZE,
																												117,
																												javax.swing.GroupLayout.PREFERRED_SIZE)))
																		.addContainerGap())
														.addGroup(
																fightPanelLayout
																		.createSequentialGroup()
																		.addGap(48,
																				48,
																				48)
																		.addComponent(
																				this.fightPlayerCombatValue,
																				javax.swing.GroupLayout.PREFERRED_SIZE,
																				28,
																				javax.swing.GroupLayout.PREFERRED_SIZE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED,
																				207,
																				Short.MAX_VALUE)
																		.addComponent(
																				this.fightEnemyCombatValue)
																		.addGap(61,
																				61,
																				61))))
						.addGroup(
								javax.swing.GroupLayout.Alignment.TRAILING,
								fightPanelLayout
										.createSequentialGroup()
										.addGap(26, 26, 26)
										.addGroup(
												fightPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.jLabel17)
														.addComponent(
																this.jLabel23))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
												153, Short.MAX_VALUE)
										.addGroup(
												fightPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.jLabel22)
														.addComponent(
																this.jLabel20))
										.addGap(28, 28, 28))
						.addGroup(
								fightPanelLayout
										.createSequentialGroup()
										.addGap(60, 60, 60)
										.addComponent(this.fightPlayerRoll)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
												220, Short.MAX_VALUE)
										.addComponent(this.fightEnemyRoll)
										.addGap(62, 62, 62))
						.addGroup(
								fightPanelLayout
										.createSequentialGroup()
										.addGap(120, 120, 120)
										.addComponent(
												this.fightRollButton,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												120,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addContainerGap(130, Short.MAX_VALUE))
						.addGroup(
								javax.swing.GroupLayout.Alignment.TRAILING,
								fightPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.fightOutcomeText,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												346, Short.MAX_VALUE)
										.addContainerGap())
						.addGroup(
								fightPanelLayout.createSequentialGroup()
										.addGap(104, 104, 104)
										.addComponent(this.fightEndButton)
										.addContainerGap(107, Short.MAX_VALUE)));
		fightPanelLayout
				.setVerticalGroup(fightPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								fightPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.jLabel2,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												32,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addGroup(
												fightPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																fightPanelLayout
																		.createSequentialGroup()
																		.addGap(51,
																				51,
																				51)
																		.addGroup(
																				fightPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.BASELINE)
																						.addComponent(
																								this.fightPlayerImage,
																								javax.swing.GroupLayout.PREFERRED_SIZE,
																								177,
																								javax.swing.GroupLayout.PREFERRED_SIZE)
																						.addComponent(
																								this.fightEnemyImage,
																								javax.swing.GroupLayout.DEFAULT_SIZE,
																								177,
																								Short.MAX_VALUE))
																		.addGap(23,
																				23,
																				23)
																		.addGroup(
																				fightPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.BASELINE)
																						.addComponent(
																								this.jLabel17)
																						.addComponent(
																								this.jLabel20))
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addGroup(
																				fightPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.BASELINE)
																						.addComponent(
																								this.fightPlayerCombatValue)
																						.addComponent(
																								this.fightEnemyCombatValue))
																		.addGap(26,
																				26,
																				26)
																		.addGroup(
																				fightPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.BASELINE)
																						.addComponent(
																								this.jLabel22)
																						.addComponent(
																								this.jLabel23))
																		.addGap(18,
																				18,
																				18)
																		.addGroup(
																				fightPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.BASELINE)
																						.addComponent(
																								this.fightPlayerRoll)
																						.addComponent(
																								this.fightEnemyRoll))
																		.addGap(26,
																				26,
																				26))
														.addGroup(
																fightPanelLayout
																		.createSequentialGroup()
																		.addGap(129,
																				129,
																				129)
																		.addComponent(
																				this.jLabel14)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED,
																				243,
																				Short.MAX_VALUE)))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addComponent(this.fightRollButton)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(this.fightOutcomeText)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(this.fightEndButton)
										.addGap(73, 73, 73)));

		this.gameBoardInfoPanel.add(this.fightPanel, "fightCard");

		this.boardTileInfoPanel
				.setMaximumSize(new java.awt.Dimension(370, 680));
		this.boardTileInfoPanel
				.setMinimumSize(new java.awt.Dimension(370, 680));
		this.boardTileInfoPanel.setOpaque(false);

		this.currentTileImage.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.currentTileImage
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

		this.currentTileName.setFont(new java.awt.Font("Segoe UI", 1, 18));
		this.currentTileName
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.currentTileName.setText("Selected Board Tile Name");

		this.currentTileDescription
				.setText("<html><p>Text describing the selected Board Tile.</p></html>");

		this.jLabel15.setText("Cards currently at this location:");

		this.currentTileCardList.setText("<html></html>");

		final javax.swing.GroupLayout boardTileInfoPanelLayout = new javax.swing.GroupLayout(
				this.boardTileInfoPanel);
		this.boardTileInfoPanel.setLayout(boardTileInfoPanelLayout);
		boardTileInfoPanelLayout
				.setHorizontalGroup(boardTileInfoPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								boardTileInfoPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												boardTileInfoPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.currentTileDescription,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																346,
																Short.MAX_VALUE)
														.addComponent(
																this.currentTileImage,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																346,
																Short.MAX_VALUE)
														.addComponent(
																this.jLabel15)
														.addComponent(
																this.currentTileCardList)
														.addComponent(
																this.currentTileName,
																javax.swing.GroupLayout.Alignment.TRAILING,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																346,
																Short.MAX_VALUE))
										.addContainerGap()));
		boardTileInfoPanelLayout
				.setVerticalGroup(boardTileInfoPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								boardTileInfoPanelLayout
										.createSequentialGroup()
										.addGap(18, 18, 18)
										.addComponent(
												this.currentTileName,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												31,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(
												this.currentTileImage,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												192,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(
												this.currentTileDescription,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												158,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(this.jLabel15)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(this.currentTileCardList)
										.addContainerGap(197, Short.MAX_VALUE)));

		this.gameBoardInfoPanel.add(this.boardTileInfoPanel,
				"boardTileInfoCard");

		this.drawnAdventureCardsPanel.setOpaque(false);
		this.drawnAdventureCardsPanel.setPreferredSize(new java.awt.Dimension(
				370, 680));

		this.drawnAdventureCardButton.setText("Draw a Adventure Card");
		this.drawnAdventureCardButton
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						drawnAdventureCardButtonActionPerformed(evt);
					}
				});

		this.drawnAdventureCardContinueButton.setText("Continue");
		this.drawnAdventureCardContinueButton
				.addActionListener(new java.awt.event.ActionListener() {
					@Override
					public void actionPerformed(
							final java.awt.event.ActionEvent evt) {
						drawnAdventureCardContinueButtonActionPerformed(evt);
					}
				});

		this.drawnAdventureCardNameLabel
				.setText("PLAYER_NAME, you now stand on TILE_NAME.");

		this.drawnAdventureCardTileImage.setBorder(javax.swing.BorderFactory
				.createLineBorder(new java.awt.Color(0, 0, 0), 5));

		this.drawnAdventureCardTileDescription.setText("Tile description");

		this.jLabel16.setText("Adventure cards currently here:");

		this.drawnAdventureCardCardList
				.setText("<html><p>Adventure card 1<br>adventure card 2<br>Adventure card 3</p></html>");

		this.drawnAdventureCardCurrent.setText("current card");

		final javax.swing.GroupLayout drawnAdventureCardsPanelLayout = new javax.swing.GroupLayout(
				this.drawnAdventureCardsPanel);
		this.drawnAdventureCardsPanel.setLayout(drawnAdventureCardsPanelLayout);
		drawnAdventureCardsPanelLayout
				.setHorizontalGroup(drawnAdventureCardsPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								drawnAdventureCardsPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												drawnAdventureCardsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																drawnAdventureCardsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.drawnAdventureCardNameLabel)
																		.addContainerGap(
																				110,
																				Short.MAX_VALUE))
														.addGroup(
																drawnAdventureCardsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.drawnAdventureCardTileImage,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				346,
																				Short.MAX_VALUE)
																		.addContainerGap())
														.addGroup(
																drawnAdventureCardsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.drawnAdventureCardTileDescription)
																		.addContainerGap(
																				277,
																				Short.MAX_VALUE))
														.addGroup(
																drawnAdventureCardsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.jLabel16)
																		.addContainerGap(
																				193,
																				Short.MAX_VALUE))
														.addGroup(
																drawnAdventureCardsPanelLayout
																		.createSequentialGroup()
																		.addGroup(
																				drawnAdventureCardsPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.TRAILING)
																						.addComponent(
																								this.drawnAdventureCardCurrent)
																						.addComponent(
																								this.drawnAdventureCardCardList))
																		.addGap(18,
																				18,
																				18)
																		.addGroup(
																				drawnAdventureCardsPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.LEADING)
																						.addComponent(
																								this.drawnAdventureCardButton)
																						.addComponent(
																								this.drawnAdventureCardContinueButton))
																		.addGap(95,
																				95,
																				95)))));
		drawnAdventureCardsPanelLayout
				.setVerticalGroup(drawnAdventureCardsPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								drawnAdventureCardsPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.drawnAdventureCardNameLabel)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addComponent(
												this.drawnAdventureCardTileImage,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												180,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addGap(18, 18, 18)
										.addComponent(
												this.drawnAdventureCardTileDescription)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
												133, Short.MAX_VALUE)
										.addComponent(this.jLabel16)
										.addGap(72, 72, 72)
										.addGroup(
												drawnAdventureCardsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.TRAILING)
														.addComponent(
																this.drawnAdventureCardCardList)
														.addComponent(
																this.drawnAdventureCardButton))
										.addGap(49, 49, 49)
										.addGroup(
												drawnAdventureCardsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																this.drawnAdventureCardCurrent)
														.addComponent(
																this.drawnAdventureCardContinueButton))
										.addGap(81, 81, 81)));

		this.gameBoardInfoPanel.add(this.drawnAdventureCardsPanel,
				"drawnAdventureCardsCard");

		this.turnEndedPanel.setOpaque(false);

		this.jLabel1.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel1.setText("Your turn has ended.");

		this.turnEndedLabel.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.turnEndedLabel
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.turnEndedLabel.setText("It is now PLAYER's turn.");

		final javax.swing.GroupLayout turnEndedPanelLayout = new javax.swing.GroupLayout(
				this.turnEndedPanel);
		this.turnEndedPanel.setLayout(turnEndedPanelLayout);
		turnEndedPanelLayout
				.setHorizontalGroup(turnEndedPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								javax.swing.GroupLayout.Alignment.TRAILING,
								turnEndedPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												turnEndedPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.TRAILING)
														.addComponent(
																this.turnEndedLabel,
																javax.swing.GroupLayout.Alignment.LEADING,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																346,
																Short.MAX_VALUE)
														.addComponent(
																this.jLabel1,
																javax.swing.GroupLayout.Alignment.LEADING,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																346,
																Short.MAX_VALUE))
										.addContainerGap()));
		turnEndedPanelLayout.setVerticalGroup(turnEndedPanelLayout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						turnEndedPanelLayout
								.createSequentialGroup()
								.addGap(67, 67, 67)
								.addComponent(this.jLabel1,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										60,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addGap(18, 18, 18)
								.addComponent(this.turnEndedLabel,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										88,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addContainerGap(447, Short.MAX_VALUE)));

		this.gameBoardInfoPanel.add(this.turnEndedPanel, "turnEndedCard");

		this.gameEndedPanel.setOpaque(false);

		this.jLabel5.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.jLabel5.setText("Game has ended.");

		this.gameEndedImageLabel
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.gameEndedImageLabel.setBorder(javax.swing.BorderFactory
				.createLineBorder(new java.awt.Color(0, 0, 0), 5));
		this.gameEndedImageLabel
				.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);

		this.gameEndedNameLabel.setFont(new java.awt.Font("Segoe UI", 1, 24));
		this.gameEndedNameLabel
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.gameEndedNameLabel.setText("PLAYER has won the game!");

		final javax.swing.GroupLayout gameEndedPanelLayout = new javax.swing.GroupLayout(
				this.gameEndedPanel);
		this.gameEndedPanel.setLayout(gameEndedPanelLayout);
		gameEndedPanelLayout
				.setHorizontalGroup(gameEndedPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								gameEndedPanelLayout
										.createSequentialGroup()
										.addGroup(
												gameEndedPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																gameEndedPanelLayout
																		.createSequentialGroup()
																		.addContainerGap()
																		.addComponent(
																				this.jLabel5,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				346,
																				Short.MAX_VALUE))
														.addGroup(
																gameEndedPanelLayout
																		.createSequentialGroup()
																		.addGap(106,
																				106,
																				106)
																		.addComponent(
																				this.gameEndedImageLabel,
																				javax.swing.GroupLayout.PREFERRED_SIZE,
																				153,
																				javax.swing.GroupLayout.PREFERRED_SIZE))
														.addGroup(
																gameEndedPanelLayout
																		.createSequentialGroup()
																		.addContainerGap()
																		.addComponent(
																				this.gameEndedNameLabel,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				346,
																				Short.MAX_VALUE)))
										.addContainerGap()));
		gameEndedPanelLayout.setVerticalGroup(gameEndedPanelLayout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						gameEndedPanelLayout
								.createSequentialGroup()
								.addGap(77, 77, 77)
								.addComponent(this.jLabel5,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										61,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addGap(54, 54, 54)
								.addComponent(this.gameEndedImageLabel,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										207,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addGap(31, 31, 31)
								.addComponent(this.gameEndedNameLabel,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										72,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addContainerGap(178, Short.MAX_VALUE)));

		this.gameBoardInfoPanel.add(this.gameEndedPanel, "gameEndedCard");

		this.mainGamePanel.add(this.gameBoardInfoPanel,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(620, 10, 370,
						680));

		this.playerImageLabel
				.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
		this.playerImageLabel.setBorder(javax.swing.BorderFactory
				.createLineBorder(new java.awt.Color(0, 0, 0), 5));
		this.playerImageLabel
				.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);

		this.playerNameLabel.setFont(new java.awt.Font("Segoe UI", 3, 18));
		this.playerNameLabel.setText("PLAYER_NAME the PLAYER_PROFESSION");

		this.playerLivesLabel.setFont(new java.awt.Font("Segoe UI", 1, 14));
		this.playerLivesLabel.setText("Lives: 5");

		this.playerCoinsLabel.setFont(new java.awt.Font("Segoe UI", 1, 14));
		this.playerCoinsLabel.setText("Coins: 2");

		this.playerStrengthLabel.setFont(new java.awt.Font("Segoe UI", 1, 14));
		this.playerStrengthLabel.setText("Strength: 6 (2/7)");

		this.playerCraftLabel.setFont(new java.awt.Font("Segoe UI", 1, 14));
		this.playerCraftLabel.setText("Craft: 3 (5/7)");

		final javax.swing.GroupLayout charInfoPanelLayout = new javax.swing.GroupLayout(
				this.charInfoPanel);
		this.charInfoPanel.setLayout(charInfoPanelLayout);
		charInfoPanelLayout
				.setHorizontalGroup(charInfoPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								charInfoPanelLayout
										.createSequentialGroup()
										.addGap(20, 20, 20)
										.addComponent(
												this.playerImageLabel,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												108,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addGroup(
												charInfoPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																charInfoPanelLayout
																		.createSequentialGroup()
																		.addGap(18,
																				18,
																				18)
																		.addGroup(
																				charInfoPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.LEADING)
																						.addComponent(
																								this.playerNameLabel)
																						.addComponent(
																								this.playerLivesLabel)
																						.addComponent(
																								this.playerCoinsLabel)))
														.addGroup(
																charInfoPanelLayout
																		.createSequentialGroup()
																		.addGap(18,
																				18,
																				18)
																		.addGroup(
																				charInfoPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.LEADING)
																						.addComponent(
																								this.playerCraftLabel)
																						.addComponent(
																								this.playerStrengthLabel))))
										.addGap(619, 619, 619)));
		charInfoPanelLayout
				.setVerticalGroup(charInfoPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								charInfoPanelLayout
										.createSequentialGroup()
										.addGap(30, 30, 30)
										.addGroup(
												charInfoPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.playerImageLabel,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																190,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addGroup(
																charInfoPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.playerNameLabel)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.playerLivesLabel)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.playerCoinsLabel)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.playerStrengthLabel)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.playerCraftLabel)))
										.addContainerGap(20, Short.MAX_VALUE)));

		this.characterTabbedPane.addTab("Character", this.charInfoPanel);

		this.logBook.setColumns(20);
		this.logBook.setEditable(false);
		this.logBook.setLineWrap(true);
		this.logBook.setRows(5);
		this.logBook
				.setText("This is the logbook.\nEvents in the game are recorded here and can be viewed at any time.");
		this.jScrollPane1.setViewportView(this.logBook);

		final javax.swing.GroupLayout logbookPanelLayout = new javax.swing.GroupLayout(
				this.logbookPanel);
		this.logbookPanel.setLayout(logbookPanelLayout);
		logbookPanelLayout
				.setHorizontalGroup(logbookPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								logbookPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.jScrollPane1,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												571, Short.MAX_VALUE)
										.addContainerGap()));
		logbookPanelLayout
				.setVerticalGroup(logbookPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								logbookPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.jScrollPane1,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												214, Short.MAX_VALUE)
										.addContainerGap()));

		this.characterTabbedPane.addTab("Logbook", this.logbookPanel);

		this.specialAbilitiesLabel.setEnabled(false);

		this.specialAbilitiesList.setModel(new javax.swing.AbstractListModel() {
			/**
			 * 
			 */
			private static final long serialVersionUID = 1L;
			String[] strings = { "Evade in the Forest", "Item 2", "Item 3",
					"Item 4", "Item 5" };

			@Override
			public int getSize() {
				return this.strings.length;
			}

			@Override
			public Object getElementAt(final int i) {
				return this.strings[i];
			}
		});
		this.jScrollPane2.setViewportView(this.specialAbilitiesList);

		this.specialAbilitiesName.setFont(new java.awt.Font("Segoe UI", 3, 18));
		this.specialAbilitiesName.setText("Evade in the Forest");

		this.specialAbilitiesDescription
				.setText("<html><p>You do not have to roll a dice when in the Forest,  you are always safe there.</p><br>(Passive Ability)</html>");
		this.specialAbilitiesDescription
				.setVerticalAlignment(javax.swing.SwingConstants.TOP);

		this.specialAbilitiesSource.setText("Gained from: Gnome (Follower)");

		this.specialAbilitiesUseButton.setText("Not Useable");
		this.specialAbilitiesUseButton.setEnabled(false);

		final javax.swing.GroupLayout specialAbilitiesLabelLayout = new javax.swing.GroupLayout(
				this.specialAbilitiesLabel);
		this.specialAbilitiesLabel.setLayout(specialAbilitiesLabelLayout);
		specialAbilitiesLabelLayout
				.setHorizontalGroup(specialAbilitiesLabelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								specialAbilitiesLabelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.jScrollPane2,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												178,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addGap(18, 18, 18)
										.addGroup(
												specialAbilitiesLabelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.specialAbilitiesName)
														.addComponent(
																this.specialAbilitiesUseButton)
														.addComponent(
																this.specialAbilitiesSource)
														.addComponent(
																this.specialAbilitiesDescription,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																430,
																javax.swing.GroupLayout.PREFERRED_SIZE))
										.addContainerGap()));
		specialAbilitiesLabelLayout
				.setVerticalGroup(specialAbilitiesLabelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								specialAbilitiesLabelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												specialAbilitiesLabelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																specialAbilitiesLabelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.specialAbilitiesName)
																		.addGap(18,
																				18,
																				18)
																		.addComponent(
																				this.specialAbilitiesDescription,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				99,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.specialAbilitiesSource)
																		.addGap(18,
																				18,
																				18)
																		.addComponent(
																				this.specialAbilitiesUseButton))
														.addComponent(
																this.jScrollPane2,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																214,
																Short.MAX_VALUE))
										.addContainerGap()));

		this.characterTabbedPane.addTab("Special Abilities",
				this.specialAbilitiesLabel);

		this.itemsPanel.setEnabled(false);

		this.itemsList.setModel(new javax.swing.AbstractListModel() {
			/**
			 * 
			 */
			private static final long serialVersionUID = 1L;
			String[] strings = { "Gnome", "Item 2", "Item 3", "Item 4",
					"Item 5" };

			@Override
			public int getSize() {
				return this.strings.length;
			}

			@Override
			public Object getElementAt(final int i) {
				return this.strings[i];
			}
		});
		this.jScrollPane3.setViewportView(this.itemsList);

		this.itemsName.setFont(new java.awt.Font("Segoe UI", 3, 18));
		this.itemsName.setText("Gnome");

		this.itemsDescription
				.setText("<html><p>Gives the following special abilities:</p></html>");
		this.itemsDescription
				.setVerticalAlignment(javax.swing.SwingConstants.TOP);

		this.itemsDropButton.setText("Drop / Dismiss");
		this.itemsDropButton.setEnabled(false);

		this.itemsType.setFont(new java.awt.Font("Segoe UI", 2, 14));
		this.itemsType.setText("Follower");

		final javax.swing.GroupLayout itemsPanelLayout = new javax.swing.GroupLayout(
				this.itemsPanel);
		this.itemsPanel.setLayout(itemsPanelLayout);
		itemsPanelLayout
				.setHorizontalGroup(itemsPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								itemsPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.jScrollPane3,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												178,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addGap(18, 18, 18)
										.addGroup(
												itemsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.itemsName)
														.addComponent(
																this.itemsDropButton)
														.addComponent(
																this.itemsType)
														.addComponent(
																this.itemsDescription,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																401,
																javax.swing.GroupLayout.PREFERRED_SIZE))
										.addContainerGap()));
		itemsPanelLayout
				.setVerticalGroup(itemsPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								itemsPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												itemsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																itemsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.itemsName)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				this.itemsType)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.itemsDescription,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				111,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.itemsDropButton))
														.addComponent(
																this.jScrollPane3,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																214,
																Short.MAX_VALUE))
										.addContainerGap()));

		this.characterTabbedPane.addTab("Items & Followers", this.itemsPanel);

		this.spellsPanel.setEnabled(false);

		this.spellsList.setModel(new javax.swing.AbstractListModel() {
			/**
			 * 
			 */
			private static final long serialVersionUID = 1L;
			String[] strings = { "Counterspell", "Item 2", "Item 3", "Item 4",
					"Item 5" };

			@Override
			public int getSize() {
				return this.strings.length;
			}

			@Override
			public Object getElementAt(final int i) {
				return this.strings[i];
			}
		});
		this.jScrollPane4.setViewportView(this.spellsList);

		this.spellsName.setFont(new java.awt.Font("Segoe UI", 3, 18));
		this.spellsName.setText("Counterspell");

		this.spellsDescription.setText("<html><p>Spell description</p></html>");
		this.spellsDescription
				.setVerticalAlignment(javax.swing.SwingConstants.TOP);

		this.spellsUseButton.setText("Cast Spell");

		final javax.swing.GroupLayout spellsPanelLayout = new javax.swing.GroupLayout(
				this.spellsPanel);
		this.spellsPanel.setLayout(spellsPanelLayout);
		spellsPanelLayout
				.setHorizontalGroup(spellsPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								spellsPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												this.jScrollPane4,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												178,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addGap(18, 18, 18)
										.addGroup(
												spellsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																spellsPanelLayout
																		.createSequentialGroup()
																		.addGroup(
																				spellsPanelLayout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.LEADING)
																						.addComponent(
																								this.spellsName)
																						.addComponent(
																								this.spellsUseButton,
																								javax.swing.GroupLayout.PREFERRED_SIZE,
																								96,
																								javax.swing.GroupLayout.PREFERRED_SIZE))
																		.addGap(384,
																				384,
																				384))
														.addGroup(
																spellsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.spellsDescription,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				478,
																				Short.MAX_VALUE)
																		.addContainerGap()))));
		spellsPanelLayout
				.setVerticalGroup(spellsPanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								spellsPanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												spellsPanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																spellsPanelLayout
																		.createSequentialGroup()
																		.addComponent(
																				this.spellsName)
																		.addGap(18,
																				18,
																				18)
																		.addComponent(
																				this.spellsDescription,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				133,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
																		.addComponent(
																				this.spellsUseButton))
														.addComponent(
																this.jScrollPane4,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																214,
																Short.MAX_VALUE))
										.addContainerGap()));

		this.characterTabbedPane.addTab("Spells", this.spellsPanel);

		this.gamePanel.setEnabled(false);

		this.gamePanelConnectedLabel.setFont(new java.awt.Font("Segoe UI", 1,
				18));
		this.gamePanelConnectedLabel.setText("Connected to server: ");

		this.jLabel4.setText("TODO lista \u00f6ver spelare");

		final javax.swing.GroupLayout gamePanelLayout = new javax.swing.GroupLayout(
				this.gamePanel);
		this.gamePanel.setLayout(gamePanelLayout);
		gamePanelLayout
				.setHorizontalGroup(gamePanelLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								gamePanelLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												gamePanelLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																this.gamePanelConnectedLabel)
														.addComponent(
																this.jLabel4))
										.addContainerGap(402, Short.MAX_VALUE)));
		gamePanelLayout.setVerticalGroup(gamePanelLayout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				gamePanelLayout.createSequentialGroup().addContainerGap()
						.addComponent(this.gamePanelConnectedLabel)
						.addGap(46, 46, 46).addComponent(this.jLabel4)
						.addContainerGap(140, Short.MAX_VALUE)));

		this.characterTabbedPane.addTab("Game", this.gamePanel);

		this.mainGamePanel.add(this.characterTabbedPane,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 360, 600,
						270));

		this.soundButton.setText("Play Music");
		this.soundButton.addActionListener(new java.awt.event.ActionListener() {
			@Override
			public void actionPerformed(final java.awt.event.ActionEvent evt) {
				soundButtonActionPerformed(evt);
			}
		});
		this.mainGamePanel.add(this.soundButton,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 660, 100,
						-1));

		this.clientGUIPanel.add(this.mainGamePanel,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 1000,
						700));

		this.connectBackgroundLabel.setIcon(new javax.swing.ImageIcon(
				getClass().getResource("/client/gui/background.jpg"))); // NOI18N
		this.clientGUIPanel.add(this.connectBackgroundLabel,
				new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 1000,
						700));

		final javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				layout.createSequentialGroup()
						.addComponent(this.clientGUIPanel,
								javax.swing.GroupLayout.PREFERRED_SIZE, 1000,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
								Short.MAX_VALUE)));
		layout.setVerticalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
				this.clientGUIPanel, javax.swing.GroupLayout.PREFERRED_SIZE,
				700, javax.swing.GroupLayout.PREFERRED_SIZE));

		pack();
	}// </editor-fold>
		// GEN-END:initComponents

	private boolean soundPlaying = false;

	private void soundButtonActionPerformed(final java.awt.event.ActionEvent evt) {
		if (!this.soundPlaying) {
			this.sound.loop();
			this.soundButton.setText("Stop Music");
			this.soundPlaying = true;
		} else {
			this.sound.stop();
			this.soundButton.setText("Play Music");
			this.soundPlaying = false;
		}
	}

	private void drawnAdventureCardButtonActionPerformed(
			final java.awt.event.ActionEvent evt) {
		this.controller.tileEvent();
		setDrawAdventureCardEnabled(false);
		setDrawAdventureCardContinueEnabled(true);
	}

	private void drawnAdventureCardContinueButtonActionPerformed(
			final java.awt.event.ActionEvent evt) {
		this.controller.tileEventContinue();
	}

	public javax.swing.JButton getConnectButton() {
		return this.connectButton;
	}

	protected void fightEndButtonActionPerformed(final ActionEvent evt) {
		// TODO Auto-generated method stub

	}

	private void showMapImage() {
		final URL url = getClass().getResource("gui/gameBoard.jpg");
		final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
		// tempImage = tempImage.getScaledInstance(gameBoardPanel.getWidth(),
		// gameBoardPanel.getHeight(), Image.SCALE_SMOOTH);
		this.backgroundMapImage.setIcon(new ImageIcon(tempImage));
		// repaint();
		// validate();
		// mapImageLabel.revalidate();
		// mapImageLabel.repaint();

	}

	private void fightRollButtonActionPerformed(
			final java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:
	}

	void connectChar5ActionPerformed(final java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:
	}

	void connectChar4ActionPerformed(final java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:
	}

	void connectChar3ActionPerformed(final java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:
	}

	void connectChar2ActionPerformed(final java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:
	}

	// Setters for all labels

	public javax.swing.JPanel getGameBoardInfoPanel() {
		return this.gameBoardInfoPanel;
	}

	// Fight label
	public void changeFightPlayerImage(final Icon i) {
		this.fightPlayerImage.setIcon(i);
	}

	public void changePlayerBorderColor(final Color color) {
		this.playerImageLabel.setBorder(javax.swing.BorderFactory
				.createLineBorder(this.controller
						.getPlayerColor(this.controller.getThisPlayerNumber()),
						5));
		this.fightPlayerImage.setBorder(javax.swing.BorderFactory
				.createLineBorder(this.controller
						.getPlayerColor(this.controller.getThisPlayerNumber()),
						5));
	}

	public void changeFightEnemyImage(final Icon i) {
		this.fightEnemyImage.setIcon(i);
	}

	public void changeFightPlayerCombatValue(final int i) {
		this.fightPlayerCombatValue.setText("" + i);
	}

	public void changeFightEnemyCombatValue(final int i) {
		this.fightEnemyCombatValue.setText("" + i);
	}

	public void changeFightPlayerRoll(final int i) {
		this.fightPlayerRoll.setText("" + i);
	}

	public void changeFightEnemyRoll(final int i) {
		this.fightEnemyRoll.setText("" + i);
	}

	public void changeFightOutcomeText(final String s) {
		this.fightOutcomeText.setText(s);
	}

	public JButton getFightRollButton() {
		return this.fightRollButton;
	}

	public JButton getFightEndButton() {
		return this.fightEndButton;
	}

	// End fight panel

	// Board tile info panel
	public void changeCurrentTileImage(final Icon i) {
		this.currentTileImage.setIcon(i);
	}

	public int getCurrentTileImageWidth() {
		return this.currentTileImage.getWidth();
	}

	public void changeGamePanelConnectedLabel(final String s) {
		this.gamePanelConnectedLabel.setText(s);
	}

	public int getCurrentTileImageHeight() {
		return this.currentTileImage.getHeight();
	}

	public void changeCurrentTileName(final String s) {
		this.currentTileName.setText(s);
	}

	public void changeCurrentTileDescription(final String s) {
		this.currentTileDescription.setText(s);
	}

	public void changeCurrentTileCardList(final String s) {
		this.currentTileCardList.setText(s);
	}

	// End board tile info panel

	// Move panel
	public void changeMovePanelPlayerName(final String s) {
		this.movePanelPlayerName.setText(s);
	}

	public void changeMovePanelPlayerImage(final Icon i) {
		this.movePanelPlayerImage.setIcon(i);
	}

	public void changeMovePanelDiceImage(final int i) {
		switch (i) {
		// Bad programming, should store the images somewhere to prevent
		// image creation when it is not needed.
		// This is true for all images we use in this project and is on the
		case 1: {
			final URL url = getClass().getResource("gui/die1.png");
			final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
			this.movePanelDiceImage.setIcon(new ImageIcon(tempImage));
		}
			break;
		case 2: {
			final URL url = getClass().getResource("gui/die2.png");
			final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
			this.movePanelDiceImage.setIcon(new ImageIcon(tempImage));
		}
			break;
		case 3: {
			final URL url = getClass().getResource("gui/die3.png");
			final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
			this.movePanelDiceImage.setIcon(new ImageIcon(tempImage));
		}
			break;
		case 4: {
			final URL url = getClass().getResource("gui/die4.png");
			final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
			this.movePanelDiceImage.setIcon(new ImageIcon(tempImage));
		}
			break;
		case 5: {
			final URL url = getClass().getResource("gui/die5.png");
			final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
			this.movePanelDiceImage.setIcon(new ImageIcon(tempImage));
		}
			break;
		case 6: {
			final URL url = getClass().getResource("gui/die6.png");
			final Image tempImage = Toolkit.getDefaultToolkit().getImage(url);
			this.movePanelDiceImage.setIcon(new ImageIcon(tempImage));
		}
			break;
		default: {
			this.movePanelDiceImage.setIcon(null);
		}

		}
	}

	public void changeMovePanelDiceLabel(final String s) {
		this.movePanelDiceLabel.setText(s);
	}

	public JButton getMovePanelMoveButton() {
		return this.movePanelMoveButton;
	}

	// End move panel

	// Drawn Adventure cards panel
	public JButton getDrawnAdventureCardDrawButton() {
		return this.drawnAdventureCardButton;
	}

	public JButton getDrawnAdventureCardContinueButton() {
		return this.drawnAdventureCardContinueButton;
	}

	public void changeDrawnAdventureCardNameLabel(final String s) {
		this.drawnAdventureCardNameLabel.setText(s);
	}

	public void changeDrawnAdventureCardTileDescription(final String s) {
		this.drawnAdventureCardTileDescription.setText(s);
	}

	public void changeDrawnAdventureCardTileImage(final ImageIcon a) {
		this.drawnAdventureCardTileImage.setIcon(a);
	}

	public void changeDrawnAdventureCardCardList(final String s) {
		this.drawnAdventureCardCardList.setText(s);
	}

	public void changeDrawnAdventureCardCurrentCard(final String s) {
		this.drawnAdventureCardCurrent.setText(s);
	}

	// End draw adventure card panel

	// Turn ended panel
	public void changeTurnEndedLabel(final String s) {
		this.turnEndedLabel.setText(s);
	}

	// end turn ended panel

	// Game ended Panel
	public void changeGameEndedNameLabel(final String s) {
		this.gameEndedNameLabel.setText(s);
	}

	public void changeGameEndedImageLabel(final ImageIcon i) {
		this.gameEndedImageLabel.setIcon(i);
	}

	public void changeGameEndedImageLabelBorderColor(final Color c) {
		this.gameEndedImageLabel.setBorder(javax.swing.BorderFactory
				.createLineBorder(c, 5));
	}

	// end game ended panel

	// Character info panel
	public void changePlayerImageLabel(final Icon i) {
		this.playerImageLabel.setIcon(i);
	}

	public void changePlayerNameLabel(final String s) {
		this.playerNameLabel.setText(s);
	}

	public void changePlayerLivesLabel(final String s) {
		this.playerLivesLabel.setText(s);
	}

	public void changePlayerCoinsLabel(final String s) {
		this.playerCoinsLabel.setText(s);
	}

	public void changePlayerCraftLabel(final String s) {
		this.playerCraftLabel.setText(s);
	}

	public void changePlayerStrengthLabel(final String s) {
		this.playerStrengthLabel.setText(s);
	}

	// End character info panel

	// Special abilities panel
	public JList getSpecialAbilitiesList() {
		return this.specialAbilitiesList;
	}

	public void changeSpecialAbilitiesName(final String s) {
		this.specialAbilitiesName.setText(s);
	}

	public void changeSpecialAbilitiesDescription(final String s) {
		this.specialAbilitiesDescription.setText(s);
	}

	public void changeSpecialAbilitiesSource(final String s) {
		this.specialAbilitiesSource.setText(s);
	}

	public JButton getSpecialAbilitiesUseButton() {
		return this.specialAbilitiesUseButton;
	}

	// End special abilities panel

	// Items panel
	public JList getItemsList() {
		return this.itemsList;
	}

	public void changeItemsName(final String s) {
		this.itemsName.setText(s);
	}

	public void changeItemsDescription(final String s) {
		this.itemsDescription.setText(s);
	}

	public void changeItemsType(final String s) {
		this.itemsType.setText(s);
	}

	public JButton getItemsDropButton() {
		return this.itemsDropButton;
	}

	// End items panel

	// Spells panel
	public JList getSpellsList() {
		return this.spellsList;
	}

	public void changeSpellsName(final String s) {
		this.spellsName.setText(s);
	}

	public void changeSpellsDescription(final String s) {
		this.spellsDescription.setText(s);
	}

	public JButton getSpellsUseButton() {
		return this.spellsUseButton;
	}

	// End spells panel

	// Logbook panel
	public void changeLogBook(final String s) {
		this.logBook.setText(s);
	}

	public void addToLogBook(final String s) {
		this.logBook.append('\n' + s);
	}

	// end LogBook panel

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(final String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				new ClientView().setVisible(true);
			}
		});
	}

	// GEN-BEGIN:variables
	// Variables declaration - do not modify
	private javax.swing.JLabel backgroundMapImage;
	private javax.swing.JPanel boardTileInfoPanel;
	private javax.swing.JPanel charInfoPanel;
	private javax.swing.JTabbedPane characterTabbedPane;
	private javax.swing.JPanel clientGUIPanel;
	private javax.swing.JLabel connectBackgroundLabel;
	private javax.swing.JButton connectButton;
	private javax.swing.JRadioButton connectChar1;
	private javax.swing.JRadioButton connectChar2;
	private javax.swing.JRadioButton connectChar3;
	private javax.swing.JRadioButton connectChar4;
	private javax.swing.JRadioButton connectChar5;
	private javax.swing.JLabel connectLabel;
	private javax.swing.JPanel connectPanel;
	private javax.swing.JTextField connectPlayerName;
	private javax.swing.JTextField connectServerIP;
	private javax.swing.JLabel currentTileCardList;
	private javax.swing.JLabel currentTileDescription;
	private javax.swing.JLabel currentTileImage;
	private javax.swing.JLabel currentTileName;
	private javax.swing.JButton drawnAdventureCardButton;
	private javax.swing.JLabel drawnAdventureCardCardList;
	private javax.swing.JButton drawnAdventureCardContinueButton;
	private javax.swing.JLabel drawnAdventureCardCurrent;
	private javax.swing.JLabel drawnAdventureCardNameLabel;
	private javax.swing.JLabel drawnAdventureCardTileDescription;
	private javax.swing.JLabel drawnAdventureCardTileImage;
	private javax.swing.JPanel drawnAdventureCardsPanel;
	private javax.swing.JPanel emptyInfoPanel;
	private javax.swing.JButton fightEndButton;
	private javax.swing.JLabel fightEnemyCombatValue;
	private javax.swing.JLabel fightEnemyImage;
	private javax.swing.JLabel fightEnemyRoll;
	private javax.swing.JLabel fightOutcomeText;
	private javax.swing.JPanel fightPanel;
	private javax.swing.JLabel fightPlayerCombatValue;
	private javax.swing.JLabel fightPlayerImage;
	private javax.swing.JLabel fightPlayerRoll;
	private javax.swing.JButton fightRollButton;
	private javax.swing.JPanel gameBoardForeGround;
	private javax.swing.JPanel gameBoardInfoPanel;
	private javax.swing.JPanel gameBoardPanel;
	private javax.swing.JLabel gameEndedImageLabel;
	private javax.swing.JLabel gameEndedNameLabel;
	private javax.swing.JPanel gameEndedPanel;
	private javax.swing.JPanel gamePanel;
	private javax.swing.JLabel gamePanelConnectedLabel;
	private javax.swing.JLabel itemsDescription;
	private javax.swing.JButton itemsDropButton;
	private javax.swing.JList itemsList;
	private javax.swing.JLabel itemsName;
	private javax.swing.JPanel itemsPanel;
	private javax.swing.JLabel itemsType;
	private javax.swing.JButton jButton1;
	private javax.swing.JButton jButton10;
	private javax.swing.JButton jButton11;
	private javax.swing.JButton jButton12;
	private javax.swing.JButton jButton13;
	private javax.swing.JButton jButton14;
	private javax.swing.JButton jButton15;
	private javax.swing.JButton jButton16;
	private javax.swing.JButton jButton17;
	private javax.swing.JButton jButton18;
	private javax.swing.JButton jButton19;
	private javax.swing.JButton jButton2;
	private javax.swing.JButton jButton20;
	private javax.swing.JButton jButton21;
	private javax.swing.JButton jButton22;
	private javax.swing.JButton jButton23;
	private javax.swing.JButton jButton24;
	private javax.swing.JButton jButton25;
	private javax.swing.JButton jButton26;
	private javax.swing.JButton jButton27;
	private javax.swing.JButton jButton28;
	private javax.swing.JButton jButton29;
	private javax.swing.JButton jButton3;
	private javax.swing.JButton jButton30;
	private javax.swing.JButton jButton31;
	private javax.swing.JButton jButton32;
	private javax.swing.JButton jButton33;
	private javax.swing.JButton jButton34;
	private javax.swing.JButton jButton35;
	private javax.swing.JButton jButton36;
	private javax.swing.JButton jButton37;
	private javax.swing.JButton jButton38;
	private javax.swing.JButton jButton39;
	private javax.swing.JButton jButton4;
	private javax.swing.JButton jButton40;
	private javax.swing.JButton jButton41;
	private javax.swing.JButton jButton42;
	private javax.swing.JButton jButton43;
	private javax.swing.JButton jButton44;
	private javax.swing.JButton jButton45;
	private javax.swing.JButton jButton46;
	private javax.swing.JButton jButton47;
	private javax.swing.JButton jButton48;
	private javax.swing.JButton jButton49;
	private javax.swing.JButton jButton5;
	private javax.swing.JButton jButton6;
	private javax.swing.JButton jButton7;
	private javax.swing.JButton jButton8;
	private javax.swing.JButton jButton9;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel10;
	private javax.swing.JLabel jLabel11;
	private javax.swing.JLabel jLabel12;
	private javax.swing.JLabel jLabel14;
	private javax.swing.JLabel jLabel15;
	private javax.swing.JLabel jLabel16;
	private javax.swing.JLabel jLabel17;
	private javax.swing.JLabel jLabel18;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel20;
	private javax.swing.JLabel jLabel22;
	private javax.swing.JLabel jLabel23;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JLabel jLabel4;
	private javax.swing.JLabel jLabel5;
	private javax.swing.JLabel jLabel6;
	private javax.swing.JLabel jLabel7;
	private javax.swing.JLabel jLabel8;
	private javax.swing.JLabel jLabel9;
	private javax.swing.JPanel jPanel1;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JScrollPane jScrollPane2;
	private javax.swing.JScrollPane jScrollPane3;
	private javax.swing.JScrollPane jScrollPane4;
	private javax.swing.JTextArea logBook;
	private javax.swing.JPanel logbookPanel;
	private javax.swing.JPanel mainGamePanel;
	private javax.swing.JPanel movePanel;
	private javax.swing.JLabel movePanelDiceImage;
	private javax.swing.JLabel movePanelDiceLabel;
	private javax.swing.JButton movePanelMoveButton;
	private javax.swing.JLabel movePanelPlayerImage;
	private javax.swing.JLabel movePanelPlayerName;
	private javax.swing.JPanel panel2;
	private javax.swing.JLabel playerCoinsLabel;
	private javax.swing.JLabel playerCraftLabel;
	private javax.swing.JLabel playerImageLabel;
	private javax.swing.JLabel playerLivesLabel;
	private javax.swing.JLabel playerNameLabel;
	private javax.swing.JLabel playerStrengthLabel;
	private javax.swing.ButtonGroup selectCharacterButtonGroup;
	private javax.swing.JButton soundButton;
	private javax.swing.JLabel specialAbilitiesDescription;
	private javax.swing.JPanel specialAbilitiesLabel;
	private javax.swing.JList specialAbilitiesList;
	private javax.swing.JLabel specialAbilitiesName;
	private javax.swing.JLabel specialAbilitiesSource;
	private javax.swing.JButton specialAbilitiesUseButton;
	private javax.swing.JLabel spellsDescription;
	private javax.swing.JList spellsList;
	private javax.swing.JLabel spellsName;
	private javax.swing.JPanel spellsPanel;
	private javax.swing.JButton spellsUseButton;
	private javax.swing.JLabel turnEndedLabel;
	private javax.swing.JPanel turnEndedPanel;
	// End of variables declaration//GEN-END:variables

	private ClientController controller;

	public enum CharacterTypes {
		OGRE
	}

	public CharacterTypes getConnectPlayerClass() {
		if (this.connectChar1.isSelected()) {
			System.out.println("Char1(Ogre) vald");
			return CharacterTypes.OGRE;
		} else {
			return CharacterTypes.OGRE;
		}
	}

	public void setDrawAdventureCardEnabled(final boolean b) {
		this.drawnAdventureCardButton.setEnabled(b);
	}

	public void setDrawAdventureCardContinueEnabled(final boolean b) {
		this.drawnAdventureCardContinueButton.setEnabled(b);
	}
}